#include <iostream>
using namespace std;

/*
    定义使用命名空间
        namespace 名字
        {
            需要的变量、函数、类等
        }
    使用命名空间
        名字::变量名        ::作用域解析运算符
    using namespace test; 直接使用test命名空间的所有内容，忽略test::的使用；但是命名空间内的内容和全局变量存在相同内容时会出错

    作用域：跟全局变量的作用域一样
*/
namespace test
{
    int a = 10;
    int b = 20;
    int add(int a, int b)
    {
        return a + b;
    }
    namespace AA
    {
        int a = 1;
        int b = 2;
        int add(int a, int b)
        {
            return a + b;
        }
    }

}
int a = 100;
int b = 200;


int main()
{
    cout << "命名空间的使用："<< endl;
    cout << test::a << endl;
    cout << test::b << endl;
    cout << "全局变量的使用："<< endl;
    cout << a << endl;
    cout << b << endl;
    cout << "函数的使用："<< endl;
    cout << a + test::a << endl;
    cout << test::add(a,b)<<endl;

    cout << "嵌套命名空间使用："<< endl;
    cout << test::AA::a << endl;
    cout << test::AA::add(test::a,test::b)<<endl;


    return 0;
}
